home *** CD-ROM | disk | FTP | other *** search
/ Power Programmierung / Power-Programmierung (Tewi)(1994).iso / magazine / nan_news / toolkit / tempfile.prg < prev    next >
Text File  |  1991-08-15  |  3KB  |  122 lines

  1. /*
  2.  * File......: TEMPFILE.PRG
  3.  * Author....: Glenn Scott
  4.  * CIS ID....: 71620,1521
  5.  * Date......: $Date:   15 Aug 1991 23:05:04  $
  6.  * Revision..: $Revision:   1.5  $
  7.  * Log file..: $Logfile:   E:/nanfor/src/tempfile.prv  $
  8.  * 
  9.  * This is an original work by Glenn Scott and is placed in the
  10.  * public domain.
  11.  *
  12.  * Modification history:
  13.  * ---------------------
  14.  *
  15.  * $Log:   E:/nanfor/src/tempfile.prv  $
  16.  * 
  17.  *    Rev 1.5   15 Aug 1991 23:05:04   GLENN
  18.  * Forest Belt proofread/edited/cleaned up doc
  19.  * 
  20.  *    Rev 1.4   17 Jul 1991 22:11:18   GLENN
  21.  * Stripped off chr(0)s in the return value (aRegs[DS])
  22.  * 
  23.  *    Rev 1.3   03 Jul 1991 01:08:08   GLENN
  24.  * Changed one line in FT_TEST driver ( cHide == "Y" )
  25.  * 
  26.  *    Rev 1.2   14 Jun 1991 19:53:10   GLENN
  27.  * Minor edit to file header
  28.  * 
  29.  *    Rev 1.1   12 Jun 1991 02:45:40   GLENN
  30.  * Documentation mods, and convert to new ft_int86() syntax, return value.
  31.  * 
  32.  *    Rev 1.0   01 Apr 1991 01:02:24   GLENN
  33.  * Nanforum Toolkit
  34.  *
  35.  */
  36.  
  37.  
  38. /*  $DOC$
  39.  *  $FUNCNAME$
  40.  *     FT_TEMPFIL()
  41.  *  $CATEGORY$
  42.  *     DOS/BIOS
  43.  *  $ONELINER$
  44.  *     Create a file with a unique name
  45.  *  $SYNTAX$
  46.  *     FT_TEMPFIL( [ <cPath> ] [, <lHide> ] ) -> cFileSpec
  47.  *  $ARGUMENTS$
  48.  *     <cPath> is the directory where you want to create the temporary
  49.  *     file.  If you omit this argument, the root of the current drive
  50.  *     is assumed ("\").
  51.  *
  52.  *     If <lHide> is .T., then the file will be created with the hidden
  53.  *     attribute set.  The default is .F.
  54.  *  $RETURNS$
  55.  *     <cFileSpec> should be your path, including the name of the newly
  56.  *     created unique file.  Use this with FOPEN(), etc.
  57.  *  $DESCRIPTION$
  58.  *     This function uses DOS Interrupt 21, service 5Ah (Create temporary
  59.  *     file) to create a unique filename in a directory you specify.
  60.  *     There will be no extension.  After the file is created, you may
  61.  *     then fopen() it and do any i/o you need (see the test driver
  62.  *     in the source code).
  63.  *   
  64.  *     This function requires FT_INT86().
  65.  *  $EXAMPLES$
  66.  *     Create a unique file in the root of the current drive:
  67.  *
  68.  *            myFile := FT_TEMPFIL()
  69.  *
  70.  *     Create a unique file in the current directory and hide it:
  71.  *
  72.  *            myFile := FT_TEMPFIL(".\", .t.)
  73.  *
  74.  *     Create a unique file on another drive, but do not hide it:
  75.  *
  76.  *            myFile := FT_TEMPFIL("e:\nanfor\src\")
  77.  *  $END$
  78.  */
  79.  
  80. #include "FTINT86.CH"
  81.  
  82. #define DOS         33
  83. #define TEMPNAME    90
  84.  
  85.  
  86. #ifdef FT_TEST
  87.   FUNCTION MAIN( cPath, cHide )
  88.      LOCAL cFile, nHandle
  89.      cFile := FT_TEMPFIL( cPath, (cHide == "Y") )
  90.  
  91.      QOut( cFile )
  92.  
  93.      nHandle := fopen( cFile, 1 )
  94.      fwrite( nHandle, "This is a test!" )
  95.      fclose( nHandle )
  96.   RETURN nil
  97. #endif
  98.  
  99.  
  100.  
  101. FUNCTION FT_TEMPFIL( cPath, lHide )
  102.   LOCAL aRegs[ INT86_MAX_REGS ]
  103.  
  104.   cPath := iif( valType(cPath) != "C",           ;
  105.                    repl( chr(0),12) ,            ;
  106.                    cPath += repl( chr(0), 12 )   ;
  107.               )
  108.  
  109.   lHide := iif( valType(lHide) != "L", .f., lHide )
  110.  
  111.   aRegs[AX]        := MAKEHI( TEMPNAME )
  112.   aRegs[CX]        := iif( lHide, 2, 0 )
  113.   aRegs[DS]        := cPath
  114.   aRegs[DX]        := REG_DS
  115.  
  116.   FT_INT86( DOS, aRegs )
  117.  
  118. RETURN STRTRAN( aRegs[DS], chr(0) )
  119.  
  120.  
  121.   
  122.